Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.Net] Ricavare il valore più piccolo in un arraylist
Forum - C# / VB.NET - [VB.Net] Ricavare il valore più piccolo in un arraylist

Avatar
alimuzzy (Normal User)
Rookie


Messaggi: 28
Iscritto: 24/02/2009

Segnala al moderatore
Postato alle 18:31
Mercoledì, 08/09/2010
Ciao a tutti.
Con gli array se utilizzo il metodo GetLowerBound riesco ad ottenere il valore piu piccolo di una serie di elementi all'interno dell'array.
Utilizzando un arraylist invece non essendo presente il metodo GetLowerBound e non riuscendo a trovare qualcosa di simile come faccio a ricavare il valore più piccolo?

Grazie:D

Ultima modifica effettuata da alimuzzy il 08/09/2010 alle 18:33
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 10:37
Venerdì, 10/09/2010
Testo quotato

Postato originariamente da alimuzzy:

Il Min e Max  sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare  gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie

Ps
sto cercando di risolvere il terzo problema del http://projecteuler.net/




Se sapessi l'inglese, caro mio, sapresti anche che Bound significa limite o confine. GetLowerBound e GetUpperBound servono a ottenere rispettivamente il limite inferiore e superiore dell'array, ossia l'indice minimo e quello massimo, come mostra questa pagina:
http://msdn.microsoft.com/en-us/library/system.array.getlo ...
Min e Max sono metodi dichiarati come estensioni dell'interfaccia IEnumerable(Of T), che è implementata da qualsiasi collezione tipizzata (quindi anche dagli array).

Per mostrarti la differenza abissale che c'è tra ArrayList e List, leggi questa introduzione ai generics:
http://totemslair.org/guide/viewchapter.php?guida=vb&id=41

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 19:55
Mercoledì, 08/09/2010
Testo quotato

Postato originariamente da a_butta:

Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...?



nessuno di voi due ha capito nulla.

GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.

quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.

bastava guardare nell'intellisense per arrivarci, neanche cercare su google....

PM
Avatar
Ultimo (Member)
Guru


Messaggi: 880
Iscritto: 22/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:09
Mercoledì, 08/09/2010
Codice sorgente - presumibilmente VB.NET

  1. ' Dichiaro la mia listabella.
  2.     Dim Listabella As New List(Of Integer)
  3.  
  4.     '  Richiamo la Funzione Randomize.
  5.     Randomize()
  6.  
  7.      ' Carico la mia listabella.
  8.     For i as Int32 = 0 to 100 Step+1
  9.  
  10.        Me.Listabella.Item(index:=i) = Int(Rnd() * 100) + 1
  11.  
  12.     Next i
  13.  
  14.     ' Variabile di confronto.
  15.     Dim Scan as int32 = 0
  16.  
  17.     ' Variabile per il risultato finale Minimo.
  18.     Dim Min as int32 = 0
  19.  
  20.      ' Variabile per il risultato finale Massimo.
  21.     Dim Max as int32 = 0
  22.  
  23.     ' Ciclo la mia listabella.
  24.     For j as Int32 = 0 to  Me.Listabella.Count - 1 Step+1
  25.  
  26.      Scan = Me.Listabella.Item(index:=j)
  27.      If j = 0 Then
  28.    
  29.             Min = Me.Listabella.Item(index:=j)
  30.             Max = Me.Listabella.Item(index:=j)
  31.      End if
  32.  
  33.      If  Scan < Min Then
  34.      
  35.               Min = Scan
  36.      End if
  37.  
  38.      If  Scan > Max Then
  39.      
  40.               Max = Scan
  41.      End if
  42.  
  43.     Next j
  44.  
  45.  
  46.      ' Visualizzo il risutato Minimo.
  47.     Me.TextBoxMin.Text = Cstr(Min)
  48.  
  49.      ' Visualizzo il risutato Massimo.
  50.     Me.TextBoxMax.Text = Cstr(Max)



:k:


  

Ultima modifica effettuata da Ultimo il 08/09/2010 alle 23:40


If ok Then GOTO Avanza else GOTO Inizia

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 12:17
Giovedì, 09/09/2010
Testo quotato

Postato originariamente da HeDo:
nessuno di voi due ha capito nulla.

GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.

quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.

bastava guardare nell'intellisense per arrivarci, neanche cercare su google....



TuaCollezione.Min() = valore minimo (richiede vb2008+ e i riferimenti alle librerie linq correttamente importati).

PM
Avatar
alimuzzy (Normal User)
Rookie


Messaggi: 28
Iscritto: 24/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 10:55
Venerdì, 10/09/2010
Ok Totem in effetti mi sono espresso male non il valore ma il limite ok..
La spegazione sui generics colma chiaramente ciò che volevo sapere ottima spiegazione, dovrò solo studiarla anche se prima di quello sul tuo manuale ci sono altri capitoli da studiare..:rofl:

PM
Avatar
alimuzzy (Normal User)
Rookie


Messaggi: 28
Iscritto: 24/02/2009

Up
-1
Down
V
Segnala al moderatore
Postato alle 9:48
Venerdì, 10/09/2010
Il Min e Max  sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare  gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie

Ps
sto cercando di risolvere il terzo problema del http://projecteuler.net/


PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
-2
Down
V
Segnala al moderatore
Postato alle 19:39
Mercoledì, 08/09/2010
Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...?

PM